Vitestで全ファイルに対してカバレッジを計測する
吉川@広島です。
今回はvitestの小ネタです。
vitestを使っているプロジェクトで vitest --coverage
を走らせたところ、テストファイルがimportしているプロダクションコードのみに対してトータルカバレッジが算出されていることに気づきました。
例を出します。
以下のようにファイルがあったとします。
src ├── A.ts ├── A.test.ts └── B.ts
この時、 vitest --coverage
を実行するとカバレッジの結果にBに対してのStatements 0%が出てきませんでした。これだとAll filesのカバレッジも、Bに対してテストがないにも関わらず実態より高い数値で出てしまいます。
この点、vitestの coverage.all
というフラグを操作することで全ファイルに対してカバレッジを出せると同僚のたにもんに教えてもらいました。
環境
- node 18.12.1
- vitest 0.34.6
- @vitest/coverage-v8 0.34.6
vite.config.tsで設定する場合
設定ファイル vite.config.ts
で実現する場合、 test
配下に以下の追記をします。
// vite.config.ts export default defineConfig({ test: { coverage: { all: true, }, }, });
CLIオプションで設定する場合
CLIオプションを付け足すだけでも実現できます。その場合は以下のようにします。
npx vitest --coverage.enabled --coverage.all
そのほか注意すること
最初、 vitestが0.34.6でなく古いバージョンだったのですが、そのまま @vitest/coverage-v8
の最新を入れたらエラーになりました(内容は控えておらず失念)。バージョンは揃えた方が良さそうです。
まとめ
以上、vitest実行時に全ファイルに対しカバレッジ計測させる方法でした。
無設定のカバレッジ計測だと現状の正確な把握が困難であり、テストを追加したのにAll Filesカバレッジが思ったように上がらないといったことにもつながるため、基本的には必須で設定すべきオプションだと思いました。